// 引入一个包
const path = require('path')

//引入html插件
const HTMLWebpackPlugin=require('html-webpack-plugin');
const {title}=require('process')

// webpack 中的所有的配置信息都应该写在 module.exports 中
module.exports = {

    mode: 'development',

    // 指定入口文件
    entry: "./src/index.ts",

    // 指定打包文件所在目录
    output: {
        // 指定打包后的目录
        path: path.resolve(__dirname, 'dist'),

        // 打包后文件的文件名
        filename: "bundle.js",
    },
    // devServer: {
    //     // static: {
    //     //     directory: path.resolve(__dirname, "/"),
    //     // },
    //     //  contentBase: '/',
    //    port:8100
    // },

    devServer: {
        // contentBase: __dirname, -- 注意，这种写法已弃用
        static: {
            directory: path.join(__dirname, "/"),
        },
    },

    // 指定 webpack 打包时要使用模块
    module: {

        // 指定要加载的规则
        rules: [{
            // test 指定规则生效的文件
            test: /\.ts$/,
            // 要使用的 loader
            use: 'ts-loader',
            // 要排除的文件
            exclude: /node_modules/
        },
            {
                // test 指定规则生效的文件
                test: /\.(png|jpg|jpeg|gif)$/,
                // 要使用的 loader 'url-loader'
                use: [
                    {loader: 'url-loader',
                        options:{
                            //  name:'images/[name].[hash:8].[ext]',
                            // // outputPath:'images/',
                            //  limit:8000       //20480
                            name:'[name].[ext]',
                            esModule:false,
                            outputPath:'images/',
                            limit:20480
                        }

                    }
                ],
                // 要排除的文件
                exclude: /node_modules/,
            },
            {
               test: /\.(wav|mp3)$/,
               use: [
                   {loader:'file-loader',
                   options:{
                       name:'[name].[ext]',
                       outputPath:'sound/',
                   }
               }
               ],
                // 要排除的文件
                exclude: /node_modules/,
            }
        ]
    },
    resolve: {
        extensions: ['.js', '.ts', '.json', '.less', '.css','.jpg','.png','.jpeg','.gif','.mp3','.wav']      // 解析对文件格式
    },
    plugins: [
        new HTMLWebpackPlugin({
            template:'./src/index.html'
        })
    ]
}